前言FYT视觉组培训,针对RoboMaster的深度学习速成课。
预备知识:
学习完前面的C++培训知识,有基本的编程能力。
掌握Python的基本语法。
参考书籍:
Deep Learning with Python Second Edition (主要讲tensorflow)
DIVE INTO DEEP LEARNING (主要讲pytorch)
了解CV与RoboMaster视觉组 (视觉组圣经)
讲解人
计科2205 蔡明辰
1. 计算机视觉计算机视觉(Computer Vision,CV)是指让计算机理解和处理图像、视频、声音、文字等信息的能力。
CV的应用场景有:
图像识别:识别图像中的物体、场景、人脸、logo等。
目标跟踪:跟踪目标的移动轨迹。
图像超分辨率:提高图像的清晰度。
图像修复:修复图像中的缺失、污染、模糊等。
图像合成:合成图像的不同视角。
作业在自己电脑上配置好深度学习环境,部署YOLOv5目标检测算法。使用官方的模型权重,提交一个YOLOv5的推理视频(测试视频随意)。
前言FYT视觉组培训,针对RoboMaster的深度学习速成课。
预备知识:
学习完前面的C++培训知识,有基本的编程能力。
掌握Python的基本语法。
参考书籍:
Deep Learning with Python Second Edition (主要讲tensorflow)
DIVE INTO DEEP LEARNING (主要讲pytorch)
了解CV与RoboMaster视觉组 (视觉组圣经)
往年的深度学习文档:https://github.com/CSU-FYT-Vision/Vision-Tutorial
讲解人
计科2205 蔡明辰
1. 初识深度学习1.1 什么是深度学习深度学习(Deep Learning)是机器学习的一种方法,它利用多层神经网络对数据进行学习,并通过反向传播算法进行梯度下降,从而使得神经网络能够自动学习到数据的特征,并对未知数据进行预测。
1.2 RoboMaster与深度学习在RoboMaster中,有许多需要使用到深度学习的地方,如图像识别、目标检测等。
装甲板检测:可以使用实时目标检测装甲板的位置,准确有效击打装甲板...
自学小白的卡尔曼滤波实例前记你有没有在看卡尔曼滤波方程式感到非常烧脑,对一堆高斯分布等数学推理感到困惑?反正我是这样。如果你和我一样只想知道如何运用卡尔曼滤波完成一些例子,学会如何使用卡尔曼滤波做控制的话,希望本文可以为你提供一点帮助。
一、卡尔曼滤波(KF)拟合y=sin(x)曲线假设我们要使用卡尔曼滤波对带有噪声的 sin(x) 数据进行拟合,并输出拟合曲线的图像,同时预测 x=7.5 时的 sin(x) 值。
先贴一个代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778import numpy as npimport matplotlib.pyplot as plt# 系统模型参数dt = 0.05 # 时间步长(采样点更加密集)A = np.array([[1]]) # 状态转移矩阵B = np.arr...
计科2205班 蔡明辰
实验一
本实验主要是分治算法
T1 快速排序及第k小数问题描述实现快速排序算法,并利用快速排序算法的思想解决第k小数的问题。
解题思路
快速排序:快速排序是一种分治算法,通过选择一个”枢轴”元素,将数组分成左右两个部分,左边部分的元素都小于或等于枢轴,右边部分的元素都大于或等于枢轴,然后递归地对左右两部分进行排序。
第k小数:可以利用快速排序的思想,通过每次划分数组,确定第k小数所在的位置,如果这个位置恰好是k,那么找到了第k小数;如果位置小于k,则第k小数在右边部分;如果位置大于k,则第k小数在左边部分。
完整代码快速排序123456789101112131415161718192021222324252627282930313233343536373839#include <iostream>#include <vector>void quickSort(std::vector<int>& arr, int left, int right) { if (left < righ...
前言本篇为我做过的洛谷题的部分题解,大多是我认为比较具有代表性的或者比较有意思的题目,包含我自己的思考过程和想法。
[NOIP2001 提高组] 一元三次方程求解题目描述有形如:$a x^3 + b x^2 + c x + d = 0$ 这样的一个一元三次方程。给出该方程中各项的系数($a,b,c,d$ 均为实数),并约定该方程存在三个不同实根(根的范围在 $-100$ 至 $100$ 之间),且根与根之差的绝对值 $\ge 1$。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 $2$ 位。
提示:记方程 $f(x) = 0$,若存在 $2$ 个数 $x_1$ 和 $x_2$,且 $x_1 < x_2$,$f(x_1) \times f(x_2) < 0$,则在 $(x_1, x_2)$ 之间一定有一个根。
输入格式一行,$4$ 个实数 $a, b, c, d$。
输出格式一行,$3$ 个实根,从小到大输出,并精确到小数点后 $2$ 位。
样例 #1样例输入 #111 -5 -4 20
样例输出 #11-2.0...
问题描述
John 有两个孩子,在 John病逝后,留下了一组价值不一定相同的魔卡, 现在要求你设计一种策略,帮John的经管人将John的这些遗产分给他的两个孩子,使得他们获得的遗产差异最小(每张魔卡不能分拆)。
假设已知某股票连续若干天的股价,并且如何时候你手上只能由一支股票,即如果你要买入就得先将手上股票卖出,设计一个算法来计算你所能获取的最大利润。你最多可以完成 k笔交易。也就是说,你最多可以买k 次,卖 k 次。
1234输入:k = 2, prices = [3,2,7,5,1,4]输出:87-2 + 4-1
解题思路T1
这是一个贪心算法问题还是一个动规问题呢?
在思考这道题的时候,我犯了过于经验主义的错误。因为和之前遇见的题目有过类似的,觉得是贪心,所以没有多去求证,就框框把代码写完了,其实贪心并不能得到全局最优解(😁十分感谢看到我博客的同班同学的提醒)
贪心的思路是:
将所有的魔卡按照价值从大到小排序。
从价值最高的魔卡开始,依次分配给两个孩子中当前遗产较少的那个孩子。
重复步骤2直到所有的魔卡都被分配完毕。
这样是有问题的,直接举反例,当 ...
问题描述
对于一个给定的字符串,给定策略以最少次数将其分割成一些子串,使得某个子串都是回文串。
某公司拟在某市开一些分公司,公司分布在不同街道,街道结构可以用一棵树来进行表达。为了避免分公司间竞争冲突,两个分公司不允许开在相邻的街道。
若分公司开在不同街道产生的效益相同;
分公司开在不同街道产生的效益不同;
请分别设计策略使得所开分公司产生的价值最大。
解题思路T1
简单编写一个isPalindrome 函数用于判断给定字符串中从 start 到 end 索引范围内的子串是否为回文串。它通过比较首尾字符,逐步向中间移动来进行判断。
minCut 函数接收一个字符串 s 作为输入,然后使用动态规划来计算每个子串的最少分割次数。
首先,定义了一个长度为 n 的动态规划数组 dp,其中 dp[i] 表示 s[0:i] 子串的最少分割次数。
然后,对于字符串中的每个位置 i,判断 s[0:i] 是否为回文串。如果是,说明整个子串已经是回文串,不需要分割,因此 dp[i] 直接设置为 0。
如果 s[0:i] 不是回文串,则需要考虑如何进行分割。遍历 0 到 i-1...
前言因为本校学生校园网只允许最多三个设备登录,对于同时拥有多个联网设备的我十分不友好,而且大多单片机如esp32的wifi模块是只允许一般的WPA/WPA2认证的,是不支持校园网的portal认证。所以我决定搞一个路由器。
然后我上网买了一个TP-Link的路由器,首先尝试将插一根网线到宿舍座位上的墙口上,然后发现根本就没有网络(我们学校有的宿舍可以)。然后我尝试无线连接校园网,将路由器MAC改成了我连过校园网的手机/电脑的MAC,无果。于是最后我就决定自己用手头上的树莓派搭建一个软路由。
参考链接:https://www.bilibili.com/read/cv4211352/
准备工作所需物资
树莓派4B(最好带散热器)
USB无线网卡一个
网线
sd卡与读卡器
路由器一个(可选,我用的是TP-Link)
烧录Openwrt我采用的烧录软件是win32disk,上网下载树莓派4B的Openwrt的镜像文件。下面是文件链接:
1https://openwrt.cc/releases/targets/bcm27xx/bcm2711/
下载这个...
问题描述
调研学习并给出矩阵的LU分解方法。
给出方案计算可逆矩阵的逆。
解题思路
LU分解是一种常用的矩阵分解方法,它将一个矩阵分解为一个下三角矩阵(Lower Triangular Matrix)和一个上三角矩阵(Upper Triangular Matrix)的乘积。LU分解的过程可以通过高斯消元法来实现。以下是LU分解的算法步骤:
首先,将原始矩阵A分解为两个矩阵L和U,其中L为下三角矩阵,U为上三角矩阵。
开始时,L为单位下三角矩阵,U为矩阵A的副本。
对矩阵U进行高斯消元法的操作,将其变换为上三角形式,同时记录每一步消元操作所产生的乘积因子,这些乘积因子构成了矩阵L的非零元素。
经过一系列消元操作后,得到的上三角矩阵U即为LU分解的上三角矩阵,而L则是由之前记录的乘积因子所组成的下三角矩阵。
这样,原始矩阵A就可以表示为LU的乘积形式。LU分解可以提高计算可逆矩阵的效率,同时也方便了求解线性方程组等应用。
计算可逆矩阵的逆可以利用LU分解来实现。一旦得到了LU分解的形式,就可以通过前向替换和后向替换的方式来求解原始矩阵的逆。具体步骤如下:
首先,利用LU...